/**
 * SQLite相关的代码
 * 目的是做跟vue-element-admin相似的那种api,方便更系统化的开发
 * 要执行的语句在api中写, 打开数据库，关闭数据库在本文件中添加
 */


// 数据库相关的信息
const dbName = "elderly";
const dbPath = "_doc/elderly.db"


/**
 * 打开数据库
 * @param {Object} name
 * @param {Object} path
 * @param {Object} callback
 * 打开数据库，操作数据库之前的必做操作。打开后即可操作数据库,操作完后关闭数据库。
 * @return {boolean} isSuccess
 */
function openComDB(name, path, callback) {
	console.log("SQLiteUtils open enter============")
	var isSuccess = false;
    plus.sqlite.openDatabase({  
        name: name,  
        path: path,  
        success: function(e) {  
            plus.nativeUI.alert('打开数据库成功');  
            // callback(e)
			  isSuccess = true;
        },  
        fail: function(e) {  
            plus.nativeUI.alert("打开数据库失败,请重新打开");  
            // callback(e);  
			isSuccess = false;
        }  
    })  
	console.log("SQLiteUtils open,isSuccess is============",isSuccess)
	return isSuccess;
}

/**
 * 检查数据库打开状态，如果已经打开了，则返回，
 * 否则打开数据库，打开失败则弹窗提醒错误
 * @Date 2021-01-15 周五
 * @return {boolean} 是否打开成功，打开失败则返回false
 */
function checkDBStatus(){
	var isOpen = plus.sqlite.isOpenDatabase({
		name: dbName,
		path: dbPath
	})
	if(!isOpen){
		return openComDB(dbName,dbPath,()=>{})
	}
	return true;
}

/**
 * 关闭数据库
 * @param {Object} DBName
 * @Date 2021-01-15
 * 反正自己用，数据库关闭失败就不管了
 */
function closeDB(DBName){
	plus.sqlite.closeDatabase({
		name: DBName,
		success(e){},
		fail(e){
			plus.nativeUI.alert("数据库关闭失败，我也不知道为啥");  
		}
	})
}



/**
 * 执行SQL
 * @param {Object} resolve
 * @param {Object} reject
 * @Auth rota
 * @Date 2021-01-15 意思是再来15天就发工资了，而我就在不停的造 泥巴 轮子
 * 1. 执行语句之前需要先检查数据库状态，然后打开数据库
 * 2. 执行完语句之后关闭数据库
 * 每次执行数据库都要打开关闭,只要执行完了，不管回调函数有没有执行，都关闭数据库。
 */

export default function exSQL(sqlStr){
	return new Promise(function(resolve,reject){
		console.log("SQLiteUtils Peomis enter============")
		plus.sqlite.selectSql({
		    name: dbName,  
		    sql: sqlStr,  
		    success: function(e) {  
		        console.log("查询数据库:" + name + ",表:" + sql + ";的");  
		        console.log(JSON.stringify(e));  
		        resolve(e);  
		    },  
		    fail: function(e) {  
		        console.log("查询数据库失败:" + JSON.stringify(e));  
				reject(e);
		    }
		})
		closeDB(dbName);
	});
}